import { TimeUtil } from "@/utils/timeUtil";
import Applicant from "./applicant";
import type ApplicationInstitution from "./applicantIns";
import Debt from "./debt";
import Mediator from "./mediator";
import Repayment from "./repayment";
import Respondent from "./respondent";
class CaseStatus{
    static unapplied=0;//未申请(申请人可见,其他人不可见)
    static applied=1;//已申请(申请人和管理员可见,案件信息不可以再次改动,但是还款方案可以进行改动);
    static unaccepted=1;//未受理,由管理员进行审批
    static accepted=2;//已受理,管理员审批通过并且分配调解员
    static waitOrder=2;//等待助理,线下联系,联系申请人 被申请人 约调解时间 并填写进入系统
    static waitMediate=3;//申请人可见 管理员可见 调解员可见 助理可见 被申请人可见 等待调解人调解
    static waitChooseRepayment=3;//待选择调解方案
    static success=4;//调解成功 //调解员进行操作
    static fail=5;//调解失败
    static nullify=6;//作废
    static inject=7;//管理员拒绝
    static choosedRepaymented=8;//已经选择了还款方案
    
    static getCommentByStatus(status:number){
        if(status==this.unapplied) return "未申请";
        if(status==this.applied) return "已申请,未受理";
        if(status==this.accepted) return "已受理,待助理联系";
        if(status==this.waitMediate) return "待调解员调解";
        if(status==this.success) return "调解成功";
        if(status==this.fail) return "调解失败";
        if(status==this.inject) return "被拒绝";
        if(status==this.nullify) return "作废";
        if(status==this.choosedRepaymented) return "已选择还款方案,待调解员审批";
    }
}

// 案件
class Case {
    public static getInMediatorRangeDay(cases:Case[],beginDay:string,endDay:string){
      let startTime = new Date(beginDay);
      let endTime = new Date(endDay);
      endTime=new Date(endTime.getTime()+1000*60*60*24);
      return cases.filter(item => {
        if (item.mediationTime == null) return false;
        let mediationTime = new Date(item.mediationTime);
        return TimeUtil.TimeInRange(startTime, endTime, mediationTime);
      })
    }
    constructor(){
        this.mediator=new Mediator();
        this.repayment=new Repayment();
        this.applicant=new Applicant();
        this.respondent=new Respondent();
        this.debt=new Debt();
    }

    // 案件id
    caseId?: number;

    // 创建时间
    createdTime?: string;

    // 案件状态，
    caseState?: number;

    // 被申请人id
    rspId?: number;
    respondent?: Respondent; // 假设存在对应的 Respondent 接口

    // 申请人id
    aptId?: number;
    applicant?: Applicant; // 假设存在对应的 Applicant 接口

    applicationInstitution:ApplicationInstitution;//申请机构信息
    // 调解员id
    mId?: number;
    mediator?: Mediator; // 假设存在对应的 Mediator 接口

    // 案由
    cause?: string;

    // 欠款id
    debtId?: number;
    debt?: Debt; // 假设存在对应的 Debt 接口

    // 还款id
    repayId?: number|null;
    repayment?: Repayment; // 假设存在对应的 Repayment 接口

    // 调节时间
    mediationTime?: string;
    static getMediatorName(ca:Case){
        return  ca?.mediator==null?"未分配":ca.mediator.name;
    }
    static getMediatorPhone(ca:Case){
        return  ca?.mediator==null?"未分配":ca.mediator.phone;
    }
    static getMediationTime(ca:Case){
        return  ca?.mediationTime==null?"未分配":ca.mediationTime;
    }
    isRelated?:number;//代表是否真正和被申请人进行关联 如果不是,那么此时可以由助理进行修改
}
export {
    Case
    ,CaseStatus
};
// 注意：Respondent, Applicant, Mediator, Debt 和 Repayment 需要单独定义为相应的接口。